<template>
  <Edialog
    title="重置密码"
    :outershow="passwordShow"
    @close="passwordShow = false"
    saveClick
    @saveFn="resetPasswordFn"
  >
    <div style="padding: 0 20px">
      <el-form
        ref="passwordRef"
        label-width="100px"
        :model="passwordFrom"
        :rules="passwordRules"
      >
        <el-form-item label="密码" prop="password">
          <div class="da">
            <el-input
              v-model="passwordFrom.password"
              placeholder="请输入新密码"
            ></el-input>
            <el-tooltip effect="dark" placement="top">
              <div slot="content">
                1、不能包含用户名(大小写都不允许),例如某用户的用户名是yy,那么以下字符都不允许例如Yy,YY,yy<br />
                2、不能使用3个及以上连续顺序数字序列,例如123,234,012都不允许,014允许<br />
                3、不能使用3个及以上连续倒序数字序列,例如321,432,210都不允许,421允许<br />
                4、不能使用3个及以上连续顺序字符(大小写都不允许),例如abc,Abc,ABC都不允许,abd允许<br />
                5、不能使用3个及以上连续倒序字符(大小写都不允许),例如cba,Cba,CBA都不允许,dba允许<br />
                6、不能使用3个及以上连续相同数字、字母(大小写都不允许)、或者字符,例如aaa,aAa,AAA,777,$$$都不允许,aab允许<br />
                7、密码位数要大于8位，不能包含用户名，至少包含以下四类字符中的三类字符:
                a、英文大写字母(A到Z) b、英文小写字母(a到z)
                c、10个基本数字(0到9) d、非字母字符(例如!、$、#、%)
              </div>
              <i
                class="el-icon-question"
                style="color: #ccc; font-size: 22px; cursor: pointer"
              ></i>
            </el-tooltip>
          </div>
        </el-form-item>
      </el-form>
    </div>
  </Edialog>
</template>

<script>
import Edialog from '@/components/Edialog'
import { postResetPassword, postcheckPasswordRule } from '@/api/management/user'
import { fd, generateRandom } from '@/utils'
export default {
  components: {
    Edialog
  },
  data () {
    return {
      // 重置密码
      passwordShow: false,
      passwordFrom: { password: '', memId: '' },
      passwordRules: {
        password: [
          {
            required: true,
            message: '请输入大于8位，由英文、数字、特殊字符组成的密码',
            trigger: 'blur'
          },
          {
            min: 8,
            max: 32,
            message: '请输入大于8位，由英文、数字、特殊字符组成的密码',
            trigger: 'blur'
          }
        ]
      }
    }
  },
  methods: {
    open (id) {
      this.passwordFrom.memId = id
      this.passwordFrom.password =
        generateRandom(4) + '@' + generateRandom(4, 'digit')
      this.passwordShow = true
    },
    resetPasswordFn () {
      this.$refs.passwordRef.validate(async valid => {
        if (valid) {
          let checkedRes = await postcheckPasswordRule(
            fd({
              password: this.passwordFrom.password,
              username:
                this.$store.state.user.userInfo.loginUsername.memberUsername
            })
          )
          if (checkedRes.data && checkedRes.data.bcode == 0) {
            let res = await postResetPassword(fd(this.passwordFrom))
            if (res.code == 0 && res.data.bcode == 0) {
              this.$message.success(`${res.data.bmsg}`)
            }
            this.passwordFrom.password = ''
            this.passwordShow = false
          }
        }
      })
    }
  }
}
</script>

<style scoped lang="scss"></style>
